﻿using System;
using System.Collections.Generic;
using System.Linq;
using Entidades;

namespace AccesoADatos
{
	public class AuxiliarExamenPregunta
	{
		#region Constructor

		EvaluacionEntities _context;

		public AuxiliarExamenPregunta()
		{
			_context = new EvaluacionEntities();
			_context.ContextOptions.ProxyCreationEnabled = false;
		} 

		#endregion

		#region Métodos

		#region Agregar

		public ExamenPregunta Agregar(ExamenPregunta examenPregunta)
		{
			try
			{
				_context.ExamenPreguntas.AddObject(examenPregunta);
				_context.SaveChanges();
			}
			catch (Exception ex)
			{
				throw (ex);
			}
			return examenPregunta;
		}

		#endregion

		#region Modificar

		public void Modificar(ExamenPregunta examenPregunta)
		{
			try
			{
				_context.ExamenPreguntas.Attach(examenPregunta);
				_context.ObjectStateManager.ChangeObjectState(examenPregunta, System.Data.EntityState.Modified);
				_context.SaveChanges();
			}
			catch (Exception ex)
			{
				throw (ex);
			}
		}

		#endregion

		#region Eliminar

		public void Eliminar(ExamenPregunta examenPregunta)
		{
			try
			{
				_context.ExamenPreguntas.Attach(examenPregunta);
				_context.ExamenPreguntas.DeleteObject(examenPregunta);
				_context.SaveChanges();
			}
			catch (Exception ex)
			{
				throw (ex);
			}
		}

		#endregion

		#region Listar

		public List<ExamenPregunta> Listar(string examenCodigo = "", string preguntaExamenClave = "", short preguntaHabilidadId = 0, short preguntaId = 0)
		{
			List<ExamenPregunta> resultado = new List<ExamenPregunta>();
			try
			{
				var q = from c in _context.ExamenPreguntas
								where
									(examenCodigo == "" || c.ExamenesCodigos == examenCodigo) &&
									(preguntaExamenClave == "" || c.PreguntasExamenesClave == preguntaExamenClave) &&
									(preguntaHabilidadId == 0 || c.PreguntasHabilidadesId == preguntaHabilidadId) &&
									(preguntaId == 0 || c.PreguntasId == preguntaId)
								select c;

				resultado = q.ToList();
			}
			catch (Exception ex)
			{
				throw (ex);
			}
			return resultado;
		}

		#endregion 

		#endregion
	}
}
